A typical competitive computer game involves a human opponent and a computer opponent. Such competitive computer games include chess, auto racing, fantasy games, and sports games. For a game to retain the interest of the human opponent, it should be a good enough opponent that the human opponent does not win every time. Thus, there is an element of analysis required in all but the simplest competitive computer games. This analysis is done on a current game situation and might be used by the computer game to determine a next move of the computer opponent.
For example, where the game is chess, the computer game is programmed to analyze a game situation, namely the current location of the chess pieces on the chess board and possibly also the history of moves made by the human opponent, and then make a decision as to what move to make in response to that game situation. The rules of chess constrain the analysis and responses and the computer need only decide, for each move, which of sixteen or fewer pieces to move to one of a few dozen spaces in a board constrained to only 64 distinct locations. Therefore, determining all of the possible moves is a simple matter. Of course, computer opponents in chess are difficult to program, but that is because moves must be anticipated many moves into the future.
With racing games, the computer-operated racecar or object just needs to be moved along a track quickly. With fantasy games, the possible actions can be arbitrary. Sports games and other competitive games that simulate real-world activities in a realistic way are more difficult in part because the field is not a small discrete set of positions and the game must behave as the human opponent would expect in the corresponding real-world activity.
As one example, the game of soccer involves several players and a ball that are free to move anywhere in a continuous two-dimensional space (possibly a three-dimensional space if player jumps and ball height are taken into account). Soccer strategy involves many considerations, such as trying to position players so that one player can kick the ball to a teammate without interference from a player on the opposing team. In order for a computerized soccer game played between a human opponent and a computer opponent to be interesting, the computer opponent must present a challenge to the human opponent and therefore, the computer game must perform in depth analysis of the game situation and determine how to move and manipulate the computer opponent team members to present that challenge. Preferably, the computer analysis is efficient enough that, given some limited amount of computing power available to the computer game, the game can analyze a game situation and fashion a suitable response in real-time.